Feature/main features#17
Merged
Merged
Conversation
JWT + argon2 기반 register/login API를 Hexagonal 구조로 추가. - users 마이그레이션, User/Plan 도메인 모델 - UserRepository 포트 + PgUserRepository 어댑터 - AuthService 포트 + StandardAuthService (해시/토큰) - register(201)/login(200) 핸들러, 라우터/AppState 연결 - 단위 9개 + 통합 5개 테스트 수익(플랜 제한) 로직은 제외. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
분석 기능의 도메인·포트·어댑터 계층 추가 (서비스/HTTP는 후속). - analyses 마이그레이션, Analysis/AnalysisResult/Insights 모델 - AnalysisRepository/CoupangCrawler/AiAnalyzer 포트 - PgAnalysisRepository (JSONB result, testcontainer 테스트) - MockCoupangCrawler + HttpCoupangCrawler (방어적 파싱 헬퍼) - MockAiAnalyzer + ClaudeAiAnalyzer (프롬프트/파싱 헬퍼) - 신규 단위테스트 13개 수익(플랜 제한) 로직 제외. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
분석 비동기 파이프라인 + 인증 미들웨어 + HTTP 엔드포인트로 백엔드 MVP 완성. - StandardAnalysisService: create→spawn(process_analysis: crawl/aggregate/analyze) - StandardUserService: /users/me 사용량(플랜 제한 없음) - AuthUser 추출기(Bearer 토큰 검증) - POST /analyses(202), GET /analyses/:id, GET /analyses 목록, GET /users/me - config claude_api_key/model, main 어댑터 조립 - 단위 8개 + 통합 4개 테스트 수익(플랜 제한 강제) 로직 제외. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- useAuthStore (Zustand + persist localStorage) - QueryProvider (TanStack Query) 루트 레이아웃 연결 - 로그인/회원가입 페이지 (api 호출 → setAuth → /dashboard) - store 3개 + login 페이지 1개 테스트 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 인증 가드 레이아웃 (하이드레이션 안전, 미인증 시 /login) - 대시보드: URL 입력 → createAnalysis → 결과 페이지 이동 - 히스토리 목록 (useQuery + listAnalyses) - UrlInput/AnalysisCard 컴포넌트 추출 - 신규 테스트 12개 (컴포넌트 10 + 페이지 2) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- useAnalysisPolling 훅 (TanStack Query v5, 2초 폴링, 완료/실패 시 중단) - InsightReport: 개선 TOP3/경쟁사 약점/구매 요인/평점 분포 - 분석 결과 페이지 (진행중/완료/실패 상태별 UI) - frontend.md 폴링 예시 v5 동기화 - 신규 테스트 14개 MVP 사용자 흐름(입력→분석→리포트) 완성. 수익 기능 제외. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- adapters/claude → adapters/gemini (ClaudeAiAnalyzer → GeminiAiAnalyzer) - generateContent API + x-goog-api-key + responseMimeType=application/json - config/env: CLAUDE_* → GEMINI_*, 기본 모델 gemini-2.5-flash - AiAnalyzer 포트/Insights 모델/MockAiAnalyzer 폴백은 유지 - 스펙(tech-stack/backend/harness) 동기화 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- DEFAULT_MODEL / config fallback / .env / 테스트 헬퍼 기본값 교체 - gemini-2.5-flash → gemini-2.0-flash-lite (현재 지원 최저가) - 스펙(tech-stack/backend) 동기화 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Next.js 기본 보일러플레이트 page.tsx 제거 - 토큰 보유 → /dashboard, 비로그인 → /login (mount 후 replace) - root-page 리다이렉트 분기 테스트 추가 - 스펙(frontend.md) 동기화 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 로그인 후에도 인증 필요 호출이 401 되던 버그 수정 - useAuthStore.getState().token → Bearer 헤더 첨부 - 토큰 유무별 헤더 첨부 동작 회귀 테스트 추가 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 제공된 키에서 gemini-2.0-flash-lite는 free tier 쿼터 0(429), gemini-2.5-flash는 200 정상 → 기본 모델 교체 - DEFAULT_MODEL / config fallback / .env / 테스트 헬퍼 / 스펙 동기화 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- next-api/review 엔드포인트 + 완전한 브라우저 헤더로 재구현
- COUPANG_PROXY_URL 스크래핑 API 프록시 패스스루({url} 치환)
- CRAWLER_MODE(http|mock) 토글 — 로컬 데모는 mock+실제 Gemini
- AppError::detail() + tracing으로 실패 원인 노출(403 등)
- parse_reviews 재귀 탐색/상품명 깊이 탐색, 크롤러 테스트 6종 추가
진단: 데이터센터 IP는 쿠팡 Akamai가 403 차단 → 헤더/쿠키로 우회 불가.
안정적 수집은 프록시(스크래핑 API) 또는 가정용 IP 필요.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
핵심 기능들 구현